package com.amado.course45mysql02.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 数据库连接
 */
public class ConnectionTest {
	private static String user = "student";
	private static String password = "student123";
	/**
	 * 驱动
	 */
	private static String className = "com.mysql.jdbc.Driver";
	// StudentService service = new StudentService();

	// private String className =
	// "com.microsoft.jdbc.sqlserver.SQLServerDriver";
	// IP:47.98.129.170
	// 端口：3306
	// 数据库:student
	// 字符集:UTF-8
//	private static String url = "jdbc:mysql://47.98.129.170:3306/student?useUnicode=true&characterEncoding=utf8";
	private static String url = "jdbc:mysql://47.98.129.170:3306/student";

	public static Connection getConn() {
		Connection conn = null;
		Statement state = null;
		// 结果集
		ResultSet rs = null;
		try {

			//1、JVM加载驱动包com.mysql.jdbc.Driver,这个类里有一个static静态代码块，代码块里有一个注册驱动
			//不是必须，新版的使用了SPI技术	
			Class.forName(className);
			//2、得到一个Connection对象
			conn = DriverManager.getConnection(url, user, password);
			//3、通过connection对象创建一个Statement（用于执行静态 SQL 语句并返回它所生成结果的对象）
			state = conn.createStatement();
			//4、执行SQL得到结果集
			rs = state.executeQuery("select id,name from t_student");
			//5、遍历结果集
			while (rs.next()) {// 将光标往后后移一个位置，如果不存在下一行，则返回 false
				// 取SQL当中的第1个查询字段
				System.out.print(rs.getLong(1));
				System.out.print(rs.getLong("id"));
				// 取SQL当中的第2个查询字段
				System.out.println(rs.getString(2));
				System.out.print(rs.getString("name"));
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			//6、关闭结果集对象
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				rs = null;
			}
			// 关闭用于执行静态 SQL的对象
			if (state != null) {
				try {
					state.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				state = null;
			}
			// 关闭数据库连接
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				conn = null;
			}
		}

		return null;
	}

	// 关闭数据库
	public static void close(ResultSet rs, Statement state, Connection conn) {

	}

	// 测试数据库连接是否成功
	public static void main(String[] args) {
		System.out.println(getConn());
	}
}